//package com.smile.config;
//
//import cn.dev33.satoken.stp.StpInterface;
//import cn.hutool.core.collection.CollectionUtil;
//import cn.hutool.core.util.ObjectUtil;
//import com.smile.api.MenuApi;
//import com.smile.api.RoleApi;
//import com.smile.api.UserApi;
//import com.smile.commons.page.R;
//import com.smile.model.response.GetMenusByRoleIdResponse;
//import com.smile.model.response.GetRoleByIdResponse;
//import com.smile.model.response.GetUserByIdResponse;
//import com.smile.model.response.ShowMenuListResponse;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.stereotype.Component;
//
//import java.util.ArrayList;
//import java.util.List;
//
//@Component    // 保证此类被 SpringBoot 扫描，完成 Sa-Token 的自定义权限验证扩展
//public class StpInterfaceImpl implements StpInterface {
//
//
//    @Autowired
//    private RedisTemplate redisTemplate;
//
//    @Autowired
//    private RoleApi roleApi;
//
//    @Autowired
//    private UserApi userApi;
//
//    @Autowired
//    private MenuApi menuApi;
//
//
//    /**
//     * 返回一个账号所拥有的权限码集合
//     */
//    @Override
//    public List<String> getPermissionList(Object loginId, String loginType) {
//        R<GetUserByIdResponse> userById = userApi.getUserById(Long.parseLong(loginId.toString()));
//        if (ObjectUtil.isNull(userById) || ObjectUtil.isNull(userById.getData())) {
//            return List.of();
//        }
//        Long roleId = userById.getData().getRoleId();
//        R<List<GetMenusByRoleIdResponse>> menusByRoleId = menuApi.getMenusByRoleId(roleId);
//
//        List<String> permissionList = new ArrayList<>();
//
//        if (ObjectUtil.isNotNull(menusByRoleId) || ObjectUtil.isNotNull(menusByRoleId.getData())) {
//            R<List<ShowMenuListResponse>> list = menuApi.list();
//            menusByRoleId.getData().forEach(item -> {
//                Long menuId = item.getMenuId();
//
//
//                if (ObjectUtil.isNotNull(list) ||CollectionUtil.isNotEmpty(list.getData())) {
//                    list.getData().forEach(item1 -> {
//                        if (menuId.equals(item1.getId())) {
//                            permissionList.add(item1.getMenuName());
//                        }
//                    });
//                }
//            })  ;
//        }
//
//
//        return permissionList;
//    }
//
//    /**
//     * 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)
//     */
//    @Override
//    public List<String> getRoleList(Object loginId, String loginType) {
//        R<GetUserByIdResponse> userById = userApi.getUserById(Long.parseLong(loginId.toString()));
//        if (ObjectUtil.isNull(userById) || ObjectUtil.isNull(userById.getData())) {
//            return List.of();
//        }
//        Long roleId = userById.getData().getRoleId();
//        R<GetRoleByIdResponse> roleById = roleApi.getRoleById(roleId);
//        if (ObjectUtil.isNull(roleById) || ObjectUtil.isNull(roleById.getData())) {
//            return List.of();
//        }
//
//        String roleName = roleById.getData().getRoleName();
//
//        List<String> list = new ArrayList<>();
//        list.add(roleName);
//
//        return list;
//    }
//
//}